package com.kaifamiao.strings;

/**
 * 1、intern 返回字符串对象的规范化表示形式
 * 2、调用intern时，若池已包含一个等于此String对象的字符串，则直接返回池中字符串的地址
 * 3、调用intern时，若池中不包含等于此String对象的字符串，将此String对象添加到池中，并返回池中该String对象的引用
 */
public class InternTest2 {

	public static void main(String[] args) {
		
		// 遭遇 字符串字面量 时，会先尝试从池中寻找相等的字符串，若找到则返回，
		// 否则，会创建String实例并添加到池中再返回池中String对象的地址
		String x = "春眠不觉晓" ; // 此时会在池中添加String实例
		
		char[] chars = { '春','眠','不','觉','晓' };
		
		// 创建一个String实例(目前是在堆中)
		String s = new String( chars );
		
		// 调用intern时，若池已包含一个等于此String对象的字符串，则直接返回池中字符串的地址
		String t = s.intern();
		
		System.out.println( t == x ); // true
		System.out.println( s == t ); // false
		
	}

}
